package com.study.server.service;

import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.study.server.domain.${Domain};
import com.study.server.domain.${Domain}Example;
import com.study.server.dto.${Domain}Dto;
import com.study.server.dto.PageDto;
import com.study.server.mapper.${Domain}Mapper;
import com.study.server.util.CopyUtil;
import com.study.server.util.UuidUtil;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;

import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;

@Service
public class ${Domain}Service {

    @Resource
   private ${Domain}Mapper mapper;


    public String queryAll(){
        return "";
    };

    /**
     * 查询操作
     * @param ${domain}PageDto
     */
    public void list(PageDto<${Domain}> ${domain}PageDto){

        Page<Object> objects = PageHelper.startPage(${domain}PageDto.getPage(),${domain}PageDto.getSize());
        ${Domain}Example ${domain}Example = new ${Domain}Example();
        //      ${domain}Example.createCriteria().andIdEqualTo("1");
    //   ${domain}Example.setOrderByClause("id desc");
        List<${Domain}> ${domain}List = mapper.selectByExample(${domain}Example);

        PageInfo<${Domain}> ${domain}PageInfo = new PageInfo<>(${domain}List);
        ${domain}PageDto.setTotal(${domain}PageInfo.getTotal());
        List<${Domain}Dto> ${domain}DtoList = new ArrayList<${Domain}Dto>();
        for (int i = 0; i <${domain}List.size() ; i++) {
            ${Domain} ${domain} = ${domain}List.get(i);
            ${Domain}Dto dto = new ${Domain}Dto();
            BeanUtils.copyProperties(${domain},dto);
            ${domain}DtoList.add(dto);
        }
        ${domain}PageDto.setList(${domain}List);

    };

    /**
     * 删除或新增
     * @param ${domain}Dto
     */

    public void save(${Domain}Dto ${domain}Dto){
        ${Domain} ${domain}  = CopyUtil.copy(${domain}Dto,${Domain}.class);
        if(StringUtils.isEmpty(${domain}.getId())){
          this.insert(${domain});
      }else {
            this.update(${domain});
      }
    }

    /**
     * 新增
     * @param ${domain}
     */

    private void insert(${Domain} ${domain}){
        ${domain}.setId(UuidUtil.getShortUuid());
        mapper.insert( ${domain} );
    }
    private void update(${Domain} ${domain}){
        mapper.updateByPrimaryKey(${domain});
    }

    /**
     * 删除
     * @param id
     */
    public void del(String id){
        mapper.deleteByPrimaryKey(id);
    }

}
